home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / U-Utilities / (c)u2.d64 / using 64 wedge.c (.txt) < prev   
Commodore BASIC  |  2007-02-04  |  10KB  |  287 lines

  1. 10 REM: PREPARED BY DUNCAN J MCRAE,
  2. 20 REM: WITH HELP FROM ARTICLES
  3. 30 REM: WRITTEN BY JIM BUTTERFIELD,
  4. 40 REM: THE 1541 USER'S MANUAL AND
  5. 50 REM: A SHORT PROGRAM FROM TPUG.
  6. 60 REM: I AM SURE SOMEONE WILL FIND
  7. 70 REM: ERRORS AND OMMISSIONS - IF THEY
  8. 80 REM: DO, I WOULD HIGHLY APPRECIATE
  9. 90 REM: A CALL AT (416)291-8785 OR
  10. 100 REM: (416)863-2504.
  11. 200 PRINT"[147]"TAB(9)" USE OF THE C-64 WEDGE [146]"
  12. 210 PRINT"HAS FOUR USES
  13. 220 [153]"(1) LOAD, RUN AND SAVE PROGRAMS
  14. 230 PRINT"(2) OBTAIN DIRECTORY WITHOUT
  15. 240 [153]"DISTURBING ALREADY LOADED
  16. 250 PRINT"FILE
  17. 260 [153]"(3) TRANSMIT DISK COMMANDS
  18. 270 PRINT"(4) CHECK DISK ERROR STATUS
  19. 280 [153]"TO LOAD TYPE: LOAD";[199](34);"C-64 WEDGE";[199](34);",8
  20. 290 PRINT"- AND  RETURN [146] - THEN TYPE: ";CHR$(34);"RUN";CHR$(34)
  21. 300 PRINT"- AND  RETURN [146]
  22. 310 [153]"THE WEDGE LOADS DOS 5.1 (DOS MEANS
  23. 320 PRINT"DISK OPERATING SYSTEM)
  24. 330 [153]"YOU MAY NOW TYPE ";[199](34);"NEW";[199](34);" OR  RESTORE WAIT"
  25. 340 [153]"WITHOUT DISTURBING THE WEDGE"
  26. 350 [141]4000
  27. 400 [153]"WHENEVER I FORMAT A DISK (AS
  28. 410 PRINT"DESCRIBED LATER) I ALWAYS ENSURE
  29. 420 [153]"THAT THE FIRST TWO PROGRAMS ON THE
  30. 430 PRINT"DISK ARE THE WEDGE AND DOS 5.1"
  31. 440 PRINT"TO TRANSFER THE WEDGE, I LOAD THE
  32. 450 [153]"C-64 WEDGE AND SAVE IT AS ";[199](34);"WEDGE";[199](34)
  33. 460 [153]"IN THE NORMAL MANNER - BY USING
  34. 470 PRINT"A PROGRAM NAME OF ";CHR$(34);"WEDGE";CHR$(34);" IT IS
  35. 480 [153]"EASIER TO TYPE AND REMEMBER
  36. 490 PRINT"TO TRANSFER DOS 5.1 IT IS NECESSARY
  37. 500 [153]"EITHER TO USE A FILE COPIER PROGRAM
  38. 510 PRINT"OR TO LOAD AND RUN A MACHINE
  39. 520 [153]"LANGUAGE MONITOR SUCH AS SUPERMON64
  40. 530 PRINT" - TO LOAD TO THE MONITOR TYPE:
  41. 540 [153]"L";[199](34);"DOS 5.1";[199](34);",08 - AND  RETURN WAIT
  42. 550 PRINT" - TO SAVE FROM THE MONITOR TO THE
  43. 560 [153]"NEW DISK TYPE:
  44. 570 PRINT"S";CHR$(34);"DOS 5.1";CHR$(34);",08,CC00,CF5A - AND  RETURN [146]
  45. 580 [141]5000:[139]A$[178]"L"[137]200
  46. 600 [153]" RULES OF THE WEDGE WAIT"
  47. 610 [153]"COMMANDS MUST BE DIRECT - NOT IN A      PROGRAM"
  48. 620 [153]"COMMANDS MUST START IN THE FIRST        COLUMN OF THE SCREEN
  49. 630 PRINT"IT IS NOT NECESSARY TO ADD ,8
  50. 640 [153]"TO FILE NAMES WHEN USING THE
  51. 650 PRINT"WEDGE COMMANDS - THE COMPUTER
  52. 660 [153]"DEFAULTS TO THE DISK DRIVE
  53. 670 PRINT"FILE NAME NEED NOT BE IN QUOTES"
  54. 680 PRINT"DISK COMMANDS ARE PRECEEDED WITH
  55. 690 [153]"@ OR > - (I PREFER @)"
  56. 700 [153]"SOME PROGRAMS CONTAINING MACHINE
  57. 710 PRINT"LANGUAGE WILL NOT RUN WITH THE
  58. 720 [153]"WEDGE IN PLACE
  59. 730 GOSUB5000:IFA$="L"GOTO400
  60. 800 PRINT" (1) PROGRAM COMMANDS [146]"
  61. 810 PRINT"PROGRAM COMMANDS ARE:"
  62. 820 PRINT"/ - TO LOAD A PROGRAM"
  63. 830 PRINT"^ - TO LOAD AND RUN A PROGRAM"
  64. 840 PRINT"_ - TO SAVE A PROGRAM
  65. 850 [153]"% - TO LOAD A PROGRAM TO A"
  66. 860 [153]"SPECIFIC ADDRESS"
  67. 870 [153]"EXAMPLES OF THE PROGRAM
  68. 880 PRINT"COMMANDS ARE:"
  69. 890 PRINT"/PROGRAM = LOAD";CHR$(34);"PROGRAM";CHR$(34);",8"
  70. 900 PRINT"^PROGRAM = LOAD";CHR$(34);"PROGRAM";CHR$(34);",8 AND RUN
  71. 910 [153]"_PROGRAM = SAVE";[199](34);"PROGRAM";[199](34);",8
  72. 920 PRINT"%PROGRAM = LOAD";CHR$(34);"PROGRAM";CHR$(34);",8,1
  73. 930 [153]"TO RESAVE AN EXISTING PROGRAM, WHERE
  74. 940 PRINT"FOR EXAMPLE YOU HAVE MADE CHANGES,
  75. 950 [153]"THE COMMAND IS:
  76. 960 PRINT"_@0:PROGRAM - OR
  77. 970 [153]"_@:PROGRAM
  78. 980 GOSUB5000:IFA$="L"GOTO600
  79. 1000 PRINT"PATTERN MATCHING MAY BE USED - THE      CHARACTERS ARE:"
  80. 1010 PRINT"? - TO MATCH A SINGLE CHARACTER
  81. 1020 [153]"* - TO MATCH A STREAM OF CHARACTERS
  82. 1030 PRINT"/N?T WILL LOAD NOT OR NUT
  83. 1040 [153]"/NOT* WILL LOAD NOTHING OR NOT OR
  84. 1050 PRINT"NOTICE
  85. 1060 [153]"IN ADDITION YOU MAY OBTAIN THE
  86. 1070 PRINT"DIRECTORY (AS DESCRIBED NEXT) MOVE
  87. 1080 [153]"THE CURSOR OPPOSITE THE PROGRAM
  88. 1090 PRINT"YOU WISH TO LOAD OR LOAD AND RUN,
  89. 1100 [153]"TYPE IN THE SYMBOL AND  RETURN WAIT -CLOSECLOSECLOSECLOSE
  90. 1110 PRINT"THE PROGRAM WILL LOAD OR LOAD AND
  91. 1120 [153]"RUN - OTHER CHARACTERS ON THE LINE
  92. 1130 PRINT"CAN BE IGNORED
  93. 1140 [153]"THE NORMAL VERIFY COMMAND IS
  94. 1150 PRINT"USED WITH THE WEDGE - THAT IS
  95. 1160 [153]"TO SAY: VERIFY";[199](34);"PROGRAM";[199](34);",8"
  96. 1170 [141]5000:[139]A$[178]"L"[137]800
  97. 1200 [153]" (2) DIRECTORY WAIT"
  98. 1210 [153]"THE DIRECTORY IS OBTAINED BY TYPING
  99. 1220 PRINT"@$ (OR >$) FOLLOWED BY  RETURN [146]
  100. 1230 [153]"THIS WILL NOT DISTURB A FILE
  101. 1240 PRINT"ALREADY LOADED
  102. 1250 [153]"PATTERN MATCHING MAY ALSO BE USED
  103. 1260 PRINT"- FOR EXAMPLE @$:D* WILL GIVE ONLY
  104. 1270 [153]"FILES STARTING WITH D
  105. 1280 PRINT"IF YOU WISH TO OBTAIN ONLY THE
  106. 1290 [153]"DISK NAME AND THE IDENTITY CODE
  107. 1300 PRINT"THEN THE COMMAND IS @$:
  108. 1310 [141]5000:[139]A$[178]"L"[137]1000
  109. 1400 [153]"IN THIS COMMAND AS WELL AS IN
  110. 1410 PRINT"SOME OF THE EXAMPLES OF THE DISK
  111. 1420 [153]"COMMANDS WHICH FOLLOW I HAVE
  112. 1430 PRINT"DROPPED A 0 FROM THE COMMAND -
  113. 1440 [153]"THIS MAY BE USED ONLY WHEN THERE
  114. 1450 PRINT"IS ONE SINGLE DRIVE IN USE - IF
  115. 1460 [153]"THERE ARE TWO DRIVES OR A DUAL
  116. 1470 PRINT"DRIVE THEN THE FIRST DRIVE IS
  117. 1480 [153]"DESIGNATED WITH 0 AND THE SECOND
  118. 1490 PRINT"DRIVE WITH 1
  119. 1500 [153]"FOR EXAMPLE, IF THERE IS A DUAL
  120. 1510 PRINT"DRIVE, THE COMMAND TO OBTAIN THE
  121. 1520 [153]"DIRECTORY FROM THE FIRST DRIVE
  122. 1530 PRINT"WOULD BE @$0 AND FROM THE SECOND
  123. 1540 [153]"DRIVE WOULD BE @$1
  124. 1550 GOSUB5000:IFA$="L"GOTO1200
  125. 1600 PRINT" (3) DISK COMMANDS [146]
  126. 1610 [153]"THE DISK COMMANDS INCLUDE FORMAT,
  127. 1620 PRINT"RENAME, SCRATCH, VALIDATE, INITIALIZE
  128. 1630 [153]"AND COPY
  129. 1640 PRINT"EACH COMMAND IS PRECEEDED BY @ OR >
  130. 1650 [153]"- IN THE FOLLOWING I SHALL USE @
  131. 1660 PRINT"IN ADDITION THERE IS THE DUPLICATE
  132. 1670 [153]"COMMAND FOR USE WHEN THERE IS A DUAL
  133. 1680 PRINT"DRIVE OR TWO DRIVES - THIS COMMAND
  134. 1690 [153]"COPIES A DISK FROM ONE DRIVE TO THE
  135. 1700 PRINT"OTHER - THE COMMAND IS:
  136. 1710 [153]"@D1=0
  137. 1720 PRINT"WHICH WILL COPY THE DISK IN DRIVE
  138. 1730 [153]"0 TO THE DISK IN DRIVE 1 - IT IS
  139. 1740 PRINT"PROBABLY BETTER TO USE ONE OF THE
  140. 1750 [153]"COPY PROGRAMS
  141. 1760 GOSUB5000:IFA$="L"GOTO1400
  142. 1800 PRINT" FORMAT [146] IS USED WHEN USING A DISK
  143. 1810 [153]"FOR THE FIRST TIME OR WHEN CLEARING
  144. 1820 PRINT"A DISK
  145. 1830 [153]"TO NEW A DISK:
  146. 1840 PRINT"@NEW0:DISK NAME,ID - OR"
  147. 1850 PRINT"@N0:DISK NAME,ID"
  148. 1860 PRINT"WHERE ";CHR$(34);"ID";CHR$(34);" IS ANY TWO UNIQUE
  149. 1870 [153]"CHARACTERS - NOTE THE 0 SHOULD
  150. 1880 PRINT"NOT BE DROPPED IN THIS COMMAND
  151. 1890 [153]"TO CLEAR A DISK:
  152. 1900 PRINT"@N0:0,00 FOLLOWED BY @N:
  153. 1910 [153]"TO CLEAR ONLY THE DIRECTORY:
  154. 1920 PRINT"@N:
  155. 1930 [153]"A DISK CANNOT BE USED UNTIL IT HAS
  156. 1940 PRINT"BEEN FORMATTED OR ";CHR$(34);"NEWED";CHR$(34)
  157. 1950 PRINT"(ANOTHER TERM COMMONLY USED FOR
  158. 1960 [153]"FORMAT OR NEW IS HEADER)"
  159. 1970 [141]5000:[139]A$[178]"L"[137]1600
  160. 2000 [153]" RENAME WAIT IS USED TO CHANGE THE NAME
  161. 2010 PRINT"OF A FILE ONCE IT IS IN THE
  162. 2020 [153]"DIRECTORY
  163. 2030 PRINT"TO RENAME:
  164. 2040 [153]"@RENAME0:NEWNAME=OLDNAME - OR
  165. 2050 PRINT"@R0:NEWNAME=OLDNAME - OR
  166. 2060 [153]"@R:NEWNAME=OLDNAME
  167. 2070 PRINT"RENAME WILL NOT WORK ON AN OPEN FILE
  168. 2080 [141]5000:[139]A$[178]"L"[137]1800
  169. 2200 [153]" SCRATCH WAIT REMOVES ONE OR MORE FILES
  170. 2210 PRINT"FROM A DISK AND FREES THE DIRECTORY
  171. 2220 [153]"AND DISK SPACE
  172. 2230 PRINT"TO SCRATCH:
  173. 2240 [153]"@SCRATCH0:FILENAME - OR
  174. 2250 PRINT"@S0:FILENAME - OR
  175. 2260 [153]"@S:FILENAME
  176. 2270 PRINT"PATTERN MATCHING MAY BE USED HOWEVER
  177. 2280 [153]"WATCH IT SINCE YOU MAY WELL SCRATCH
  178. 2290 PRINT"MORE FILES THAN YOU INTENDED
  179. 2300 [153]"IF YOU CALL FOR ERROR STATUS (I.E. @
  180. 2310 PRINT"AND  RETURN [146]) THEN THE NUMBER OF
  181. 2320 [153]"FILES SCRATCHED WILL BE RETURNED
  182. 2330 PRINT"BY THE WAY, IF YOU HAVE SCRATCHED
  183. 2340 [153]"A FILE WHICH YOU DIDN'T MEAN TO
  184. 2350 PRINT"AND YOU HAVN'T SAVED ANOTHER
  185. 2360 [153]"FILE ON TOP OF IT, YOU CAN RECOVER
  186. 2370 PRINT"IT WITH THE PROGRAM ";CHR$(34);"REVIVE";CHR$(34)
  187. 2380 GOSUB5000:IFA$="L"GOTO2000
  188. 2400 PRINT" VALIDATE [146] WILL TIDY UP A DISK WHERE
  189. 2410 [153]"THERE HAVE BEEN A NUMBER OF SCRATCHES
  190. 2420 PRINT"AND NEW FILES ADDED - IT MAY GIVE YOU
  191. 2430 [153]"ADDITIONAL SPACE ON THE DISK - IT
  192. 2440 PRINT"WILL AND SHOULD BE USED TO REMOVE
  193. 2450 [153]"ANY INCOMPLETE FILES (I.E. WHERE
  194. 2460 PRINT"A * APPEARS BESIDE THE TYPE OF FILE
  195. 2470 [153]"ON THE DIRECTORY)
  196. 2480 PRINT"TO VALIDATE:
  197. 2490 [153]"@VALIDATE0 - OR
  198. 2500 PRINT"@V0 - OR
  199. 2510 [153]"@V
  200. 2520 PRINT"THIS COMMAND SHOULD NEVER BE USED
  201. 2530 [153]"WHEN THERE ARE RANDOM FILES ON THE
  202. 2540 PRINT"DISK AS IT WILL DE-ALLOCATE THEM
  203. 2550 [153]"I USE VALIDATE QUITE FREQUENTLY
  204. 2560 PRINT"WHEN I AM COPYING AND GENERALLY
  205. 2570 [153]"MUCKING AROUND WITH A DISK
  206. 2580 GOSUB5000:IFA$="L"GOTO2200
  207. 2600 PRINT" INITIALIZE [146] RETURNS THE DISK DRIVE
  208. 2610 [153]"TO THE SAME CONDITION AS WHEN IT WAS
  209. 2620 PRINT"POWERED UP - IT IS ALSO USED IF YOU
  210. 2630 [153]"ENCOUNTER ";[199](34);"DRIVE NOT READY";[199](34);" ERRORS"
  211. 2640 [153]"TO INITIALIZE:
  212. 2650 PRINT"@INITIALIZE0 - OR
  213. 2660 [153]"@I0 - OR
  214. 2670 PRINT"@I
  215. 2680 [141]5000:[139]A$[178]"L"[137]2400
  216. 2800 [153]" COPY WAIT ALLOWS YOU TO MAKE ANOTHER
  217. 2810 PRINT"COPY OF THE SAME FILE ON THE
  218. 2820 [153]"SAME DISK BUT UNDER A DIFFERENT NAME
  219. 2830 PRINT"TO COPY:
  220. 2840 [153]"@COPY0:NEWFILE=0:OLDFILE - OR
  221. 2850 PRINT"@C0:NEWFILE=0:OLDFILE - OR
  222. 2860 [153]"@C:NEWFILE=:OLDFILE - OR
  223. 2870 PRINT"@C:NEWFILE=OLDFILE
  224. 2880 [153]"YOU CAN ALSO STICK TOGETHER OR
  225. 2890 PRINT"CONCATENATE TWO TO FOUR FILES
  226. 2900 [153]"WITH THE FOLLOWING:
  227. 2910 PRINT"@C0:NEWFILE=0:OLDFILE1,0:OLDFILE2,
  228. 2920 [153]"0:OLDFILE3,0:OLDFILE4
  229. 2930 PRINT"I AM TOLD THAT CONCATENATION WILL
  230. 2940 [153]"WORK WITH PROGRAM FILES SO LONG
  231. 2950 PRINT"AS THE LINE NUMBERS DON'T CONFLICT
  232. 2960 [153]"HOWEVER IT HAS NEVER WORKED FOR ME
  233. 2970 PRINT"- I USE A MERGE PROGRAM INSTEAD
  234. 2980 [141]5000:[139]A$[178]"L"[137]2600
  235. 3000 [153]" (4) DISK STATUS WAIT"
  236. 3010 [153]"DISK STATUS IS OBTAINED BY TYPING
  237. 3020 PRINT"@ (OR >) FOLLOWED BY  RETURN [146]"
  238. 3030 PRINT"IF NO ERROR, THEN THE MESSAGE WILL BE
  239. 3040 [153]"";[199](34);"00,OK,00,00";[199](34)
  240. 3050 [153]"THERE WILL BE A DIFFERENT MESSAGE IF"
  241. 3060 [153]"THERE IS AN ERROR OR, AS MENTIONED"
  242. 3070 [153]"EARLIER, IF THERE IS A SCRATCH
  243. 3080 PRINT"COMMAND"
  244. 3090 GOSUB5000:IFA$="L"GOTO2800
  245. 3200 PRINT"";TAB(14);" GOOD LUCK! [146]"
  246. 3210 GOSUB6000:IFA$="L"GOTO3000
  247. 3220 END
  248. 4000 PRINT"   N=NEXT:P=PRINT [146]";
  249. 4010 A$="":GETA$:IFA$=""THEN4010
  250. 4020 IFA$="P"THENGOSUB7010
  251. 4030 IFA$="N"GOTO4050
  252. 4040 GOTO4010
  253. 4050 PRINT"[147]";
  254. 4060 RETURN
  255. 5000 PRINT"   N=NEXT:L=LAST:P=PRINT [146]";
  256. 5010 A$="":GETA$:IFA$=""THEN5010
  257. 5020 IFA$="P"THENGOSUB7010
  258. 5030 IFA$="N"GOTO5060
  259. 5040 IFA$="L"GOTO5060
  260. 5050 GOTO5010
  261. 5060 PRINT"[147]";
  262. 5070 RETURN
  263. 6000 PRINT"   N=END:L=LAST:P=PRINT [146]";
  264. 6010 GOTO5010
  265. 7000 REM SCREEN COPY
  266. 7010 SI$=CHR$(15):BS$=CHR$(8):PO$=CHR$(16)
  267. 7020 RV$=CHR$(18):RO$=CHR$(146):QT$=CHR$(34)
  268. 7030 MF$=CHR$(145):VR=PEEK(648)*256
  269. 7040 OPEN4,4:PRINT#4
  270. 7050 FORCL=0TO24:QF=0:AS$=MF$:FORRO=0TO39
  271. 7060 SC=PEEK(VR+40*CL+RO)
  272. 7070 IFSC=34THENQF=1-QF
  273. 7080 IFSC<>162THEN7110
  274. 7090 QF=1-QF:IFQF=1THENAS$=AS$+RV$+QT$:GOTO7170
  275. 7100 AS$=AS$+QT$+RO$:GOTO7170:GOTO7130
  276. 7110 IFQF=1AND(SC>=128)THENSC=SC-128:GOTO7130
  277. 7120 IFSC>=128THENSC=SC-128:RF=1:AS$=AS$+RV$
  278. 7130 IFSC<32ORSC>95THENAS=SC+64:GOTO7160
  279. 7140 IFSC>31ANDSC<64THENAS=SC:GOTO7160
  280. 7150 IFSC>63ANDSC<96THENAS=SC+32:GOTO7160
  281. 7160 AS$=AS$+CHR$(AS)
  282. 7170 IFRF=1THENAS$=AS$+RO$:RF=0
  283. 7180 NEXTRO
  284. 7190 IFQF=0THENPRINT#4,SI$PO$AS$:GOTO7210
  285. 7200 PRINT#4,SI$+PO$+AS$+QT$
  286. 7210 NEXTCL:PRINT#4,SI$:CLOSE4:RETURN
  287.